/* 
 * File:   Simulation.h
 * Author: Patrick
 *
 * Created on 04 July 2012, 6:06 PM
 */

#ifndef SIMULATION_H
#define	SIMULATION_H

//standard #includes
#include <iostream>
#include <climits>
#include <cmath>
#include <string>
#include <cstdlib>

//dependant classes
#include "arrays.h"
#include "entropy.h"
#include "hydro.h"
#include "induction.h"
#include "params.h"

class Simulation{
    
public:
    
    Simulation(const std::string fileName = "run.in");
    Simulation(const Simulation& orig);
    virtual ~Simulation();
    
    void setupArrays();
    void setupEntropy();
    void setupHydro();
    void setupInduction();
    void setupParams(Params);
    
    void solveInd();
    void solveNS();
    
private:
    
    double h, dt, xlimA, ylimA, zlimA, xlimB, ylimB, zlimB;
    int xdim, ydim, zdim, nt;
    std::string simEqnOptions, indParams, nsParams, contParams, entParams;
    const std::string runFile;
    Arrays *arraysCollection;
    Entropy *ent;
    Hydro *hyd;
    Induction *ind;
    

};

#endif	/* SIMULATION_H */

